package uy.org.softtech.cssuite.web.entidad;

import javax.xml.bind.annotation.XmlTransient;

import org.springframework.security.core.GrantedAuthority;

/**
 * Implementación  de {@link GrantedAuthority} que representa un permiso de acceso en 
 * Spring Security (representado como 'ROLE_' + el token del permiso).
 * 
 * @author fabian.lobo
 */
@XmlTransient
public class Autorizacion implements GrantedAuthority {

	private static final long serialVersionUID = 20071018;
	
	private String token;

	/**
	 * Constructor que inicializa una nueva {@link Autorizacion} con el token dado.
	 * 
	 * @param token - El token del permiso
	 * @author fabian.lobo
	 */
	public Autorizacion(final String token) {
		this.token = token;
	}

	/**
	 * Retorna el nombre de la autorización (token del permiso).
	 * 
	 * @author fabian.lobo
	 */
	public String getAuthority() {
		return token;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object o) {
		Autorizacion ob = (Autorizacion) o;
		if (ob.getAuthority().equalsIgnoreCase(this.getAuthority())) {
			return true;
		} else {
			return false;
		}

	}

	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		return this.getAuthority().hashCode();
	}
}
